package com.industrial.white.mapper;

import com.industrial.system.api.domain.EmEnterpriseInformationCollection;
import com.industrial.system.api.domain.EmEnterpriseProduct;
import com.industrial.white.domain.dto.EnterExportDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface EmEnterpriseInformationCollectionMapper {
    /**
     * 查询企业信息
     * @param enterUsci 企业的社会统一信用代码
     * @return
     */
    EmEnterpriseInformationCollection getEnterDataInfo(@Param("enterUsci") String enterUsci);

    /**
     * 查询该企业的产品
     * @param enterId 企业Id
     * @return
     */
    List<EmEnterpriseProduct> selectEmenterpriseProductList(@Param("enterId") String enterId);

    List<EmEnterpriseInformationCollection> selectEmEnterpriseInformationCollectionListByDoMain(@Param("enter") EmEnterpriseInformationCollection emEnterpriseInformationCollection);

    /**
     * 查询企业基本信息列表
     *
     * @param emEnterpriseInformationCollection 企业基本信息
     * @return 企业基本信息集合
     */
    List<EmEnterpriseInformationCollection> selectEmEnterpriseInformationCollectionList(EmEnterpriseInformationCollection emEnterpriseInformationCollection);

    /**
     * 查询企业基本信息
     *
     * @param baseId 企业基本信息主键
     * @return 企业基本信息
     */
    EmEnterpriseInformationCollection selectEmEnterpriseInformationCollectionByBaseId(String baseId);

    List<EmEnterpriseProduct> selectEmenterpriseProductByEnterId(@Param("baseId") String baseId);

    /**
     * 查询需要导出的数据
     * @param enter
     * @return
     */
    List<EnterExportDto> selectEnterDataList(@Param("enter")EmEnterpriseInformationCollection enter);

    /**
     * 修改企业基本信息
     *
     * @param emEnterpriseInformationCollection 企业基本信息
     * @return 结果
     */
    int updateEmEnterpriseInformationCollection(EmEnterpriseInformationCollection emEnterpriseInformationCollection);

    /***
     * 更新只有区 市 省权限才可以更新的字段
     * @param emEnterpriseInformationCollection
     */
    void updateEnterpriseInformationRestrictedFields(EmEnterpriseInformationCollection enter);

    /**
     * 通过企业基本信息主键删除主要产品信息信息
     *
     * @param baseId 企业基本信息ID
     * @return 结果
     */
    void deleteEmEnterpriseProductByEnterId(String baseId);

    /**
     * 批量新增主要产品信息
     *
     * @param emEnterpriseProductList 主要产品信息列表
     * @return 结果
     */
    void batchEmEnterpriseProduct(List<EmEnterpriseProduct> emEnterpriseProductList);

    /**
     * 通过企业ID和统一社会信用代码查询企业数据
     *
     * @return
     */
    EmEnterpriseInformationCollection selectEmEnterpriseInforByUsciAndEnterId(@Param("enter") EmEnterpriseInformationCollection emEnterpriseInformationCollection);

    int insertEmEnterpriseInformationCollection(EmEnterpriseInformationCollection emEnterpriseInformationCollection);

    List<EnterExportDto> selectEnterProDataFromGenSql(@Param("sqlStr") String sqlStr, @Param("enter") EmEnterpriseInformationCollection enter);

    List<EmEnterpriseInformationCollection> selectEmEnterpriseInforByUscc(@Param("uscc") String uscc);

    List<EmEnterpriseInformationCollection> preMuExistWhiteByUscc(@Param("list") List<String> uscc);

    Map selectUsccFormEnterId(@Param("enterId") String enterId);

    /**
     * <p>
     *  通过企业信息代码查询企业信息
     * </p>
     *
     * @param uscc
     * @return
     */
    EmEnterpriseInformationCollection queryWhiteInfoByUscc(@Param("uscc") String uscc);
}
